- TN1181: Sherlock's Find by Content Text Extractor Plug-ins
This Technote
describes the API for creating Find By Content Text
Extractor Plug-ins. Text Extractor Plug-ins are used by
Find by Content to extract the textual information stored in
a document when it is creating indexes and summarizing files.
By doing so, it is possible for users to avoid indexing peripheral data such as
formatting commands, HTML tags, and other data that does not
relate to the information
stored in the document. By creating Text Extractor Plug-ins
for their document types, developers make it possible for
users to conduct meaningful searches for information stored
in documents created by their applications.
Text Extractor Plug-ins can be created for use with
Mac OS 8.6 and later. Mac OS 8.6 was
shipped with two Text Extractor Plug-ins: the "HTML
Text Extractor" and the "PDF Text Extractor." The "HTML
Text Extractor" strips the HTML tags from HTML files and
returns the text stored therein; the "PDF Text
Extractor" returns the textual information from Adobe®’s
Portable Document Format (PDF) files. In Mac OS 8.5, indexing
HTML files meant that both the text stored in the document
and the HTML tags were incorporated into indexes. Furthermore,
PDF files
were excluded from the indexing process. In Mac OS 8.6, meaningful
textual information extracted from these files is incorporated
into index files used by Find By Content.
This Technote provides information necessary for creating
and installing Text Extractor Plug-ins. In addition, an annotated
example Text Extractor Plug-in is provided. Developers
can easily modify this example to create their own
plug-in for use with their own file formats.
- TN1150: HFS Plus Volume Format
This Technote
describes the on-disk format for an HFS Plus volume. It does
not describe any programming interfaces for HFS Plus
volumes.
This technote is directed at developers who need to work
with HFS Plus at a very low level, below the abstraction
provided by the File Manager programming interface. This
includes developers of disk recovery utilities and
programmers implementing HFS Plus support on other
platforms.
This technote assumes that you have a conceptual
understanding of the HFS volume format, as described in Inside
Macintosh: Files.
- TN1145: Living in a Dynamic TCP Environment
This Technote
describes some of the intricacies of dealing with TCP/IP in
a dynamic environment, such as that provided by Open
Transport. Specifically, it describes how to write Open
Transport code which correctly handles multiple IP
addresses, dial-up links, sleep and wakeup on PowerBooks,
modem disconnection, and user reconfiguration.
This Note is directed at all developers using Open
Transport TCP/IP services.
- TN1104: Interrupt-Safe Routines
The traditional
Mac OS has a badly defined set of heterogeneous programming
environments. In some of these environments, your code can
access some system services but not others. Furthermore, the
names given to these environments are often overloaded and
confusing. This results in a lot of programmer confusion.
This Technote attempts to clear up this confusion by
assigning each of the execution levels a unique name,
describing how and why your code might find itself running
at a particular execution level, and outlining the
restrictions your code might face when running at that
level.
This Technote is important for anyone programming any Mac
OS code that might run at "interrupt time," and vital for
anyone doing system-level programming under the traditional
Mac OS.
- TN1060: Controlling Apps with Synthesized Events,
or jGNEFilter - the Untold Story
Until now, jGNEFilter has been "under documented," with only vague mentions appearing in Technote TB 11: GetNextEvent; Blinking Apple Menu. jGNEFilter is the name of a mechanism by which programs can obtain access to each EventRecord just before the event is sent to the caller of GetNextEvent or WaitNextEvent.
Using jGNEFilter, your programs can customize most event-driven interaction with the user, including but not limited to such things as monitoring keystrokes, and programmatically simulating some kinds of user activity. Also, without being an application or driver, your program can arrange to be called periodically at a time when it's safe to call Memory Manager (and the high-level managers which depend on Memory Manager).
Developers who would like to make use of jGNEFilter - or developers who are already bravely making use of it even in the face of inadequate documentation - should read this Technote.